#include <iostream>
using namespace std;

/*
    1.C语言:通过函数的返回值（人为规定返回值含义）来判断处理异常
    2.C++:通过try-catch语句去捕捉处理异常
            使用throw抛出（处理）异常

    return 和 throw 的区别
        return 返回值给函数调用者
        throw 抛出异常给调用者
            C++规定函数使用throw抛出异常，必须使用try-catch语句去捕捉处理异常
    语法：
        try
        {
            调用的函数
            （如果调用的函数抛出异常，则该函数下面的内容不会执行）
        }catch（需要捕捉的异常类型）
        {
            异常发生之后的处理
        }
            抛出的异常类型：
                字符串类型：const char *
                整型：int
                浮点型：double
*/

// 传统C语言处理异常
int fun(int n)
{
    if (n >= 0)
        return 0;
    else
        return -1;
}
// C++的做法
int otherFun(int n)
{
    if (n > 0)
        return 0;
    else
        throw -1;
}

int main()
{
    int n;
    cin >> n;
    try
    {
        otherFun(n);
        cout << "正常结束" << n << endl;
    }
    catch (int e) // 抛出的是整型，所以捕捉的时候也要声明整型
    {
        cout << "异常发生，异常值为：" << e << endl;
    }

    return 0;
}